home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / ysmaze / ysmaze.h < prev    next >
Text File  |  1993-07-08  |  2KB  |  68 lines

  1. /*
  2. Maze Format
  3.  
  4. short int *mazeDat;
  5.  
  6.        1
  7.   ┌────
  8.   │       
  9.  2│  3    
  10.   │       
  11.  
  12.  
  13. mazeDat[n];
  14.    16        8 7 6 5 4  2  0
  15.     |XXXXXXXX|X|X|X|X|XX|XX|
  16.          │  ││││ │└  壁1形状  00:無  01:壁  10:扉  11:リザーブ
  17.          │  ││││ └─  壁2形状 00:無  01:壁  10:扉  11:リザーブ
  18.      │  │││└─── 壁1通過 0:可能  1:不可
  19.      │  ││└──── 壁2通過 0:可能  1:不可
  20.          │  │└───── 床のプリント 1:有 2:無
  21.          │  └────── 天井のプリント 1:有 2:無
  22.      └──────── プログラマー使用可(イベント用)
  23.  
  24. */
  25.  
  26.  
  27. struct mazeStyle {
  28.     int bl;               /* 1ブロック分の壁の長さ(cm) */
  29.     int bh;               /* 壁の高さ (cm) */
  30.     int lx,ly;            /* 迷路のブロック数(東西,南北) */
  31. };
  32.  
  33. struct mazeScreen {
  34.     int cx,cy;            /* 画面中心 */
  35.     int x0,y0,x1,y1;      /* 画面描画範囲 */
  36.     int wc,dc;            /* 壁の色,ドアの色 */
  37.     int cont;             /* コントラスト(輝度の距離1mに対する減衰率(%)) */
  38.     int mag;              /* 拡大率 */
  39. };
  40.  
  41.  
  42.  
  43. #define YSC_mazeFloorCeiling(mz,dat,bx,by) ((mzdat[by*((*mz).lx)+bx]/64)&3)
  44. #define YSC_mazeFloorNumber(mz,dat,bx,by) ((mzdat[by*((*mz).lx)+bx]/256)&255)
  45.  
  46. /* wall.c */
  47. int YSC_mazeWall(struct mazeStyle *mz,short int *mzdat,int bx,int by,int dir);
  48. int YSC_mazePass(struct mazeStyle *mz,short int *mzdat,int bx,int by,int dir);
  49.  
  50.  
  51. /* drawmaze.c */
  52. void YSC_mazeGetLines(struct mazeStyle *mz,struct mazeScreen *ms,
  53.          short *dat,int bx,int by,int h,int lng,int *buf);
  54. void YSC_mazeDrawWalls(char *EGB_work,
  55.      struct mazeStyle *mz,struct mazeScreen *ms,int *buf);
  56.  
  57. /* printmap.c */
  58. void YSC_dispOneWall(char *EGB_work,struct mazeStyle *mz,
  59.      int sx,int sy,short *dat,int bx,int by,int dir,int l);
  60. void YSC_dispWalls(char *EGB_work,struct mazeStyle *mz,
  61.          int lx,int ly,short *dat,int x1,int y1,int x2,int y2,int l);
  62.  
  63.  
  64.  
  65. /* create.c */
  66. void YSC_mazeCreate(struct mazeStyle *mz,short *mzdat);
  67.  
  68.